#pragma once

#include "GeometryUtils.h"

namespace GroundConstants
  {
  const double MIN_HEIGHT = 0.0;
  const double MAX_HEIGHT = 10.0;
  const double SKY_HEIGHT = 400.0;
  const double CELL_SIZE = 10.0;
  const double PLAINS_PERCENTAGE = 0.5;
  const double WATER_LEVEL = 0.0;
#ifdef _DEBUG
  const size_t CELL_COUNT = 33;
#else
  const size_t CELL_COUNT = 65;
#endif
  const size_t HEIGHTMAP_SIZE = CELL_COUNT + 1;

  const double ORIGIN_X = 0.0;
  const double ORIGIN_Y = 0.0;
  const double ORIGIN_Z = 0.0;

  const TVector3 ORIGIN_VECTOR = TVector3(GroundConstants::ORIGIN_X, GroundConstants::ORIGIN_Y, GroundConstants::ORIGIN_Z);

#ifdef _DEBUG
  const double MAX_HILL_HEIGHT = 50.0;
  const double MAX_HOLE_DEPTH = -50.0;
  const double HMAP_CHANGE = 0.5;
#else
  const double MAX_HILL_HEIGHT = 100.0;
  const double MAX_HOLE_DEPTH = -100.0;
  const double HMAP_CHANGE = 1.0;
#endif

  const double GAUSSIAN_SIGMA_X = 1.0;
  const double GAUSSIAN_SIGMA_Y = 1.0;
//If difference > DELTA we change our point in height map   
  const double DELTA = 0.1;
  }

namespace WallConstants
  {
  const double WALL_HEIGHT = 2 * GroundConstants::MAX_HILL_HEIGHT;
  const double WALL_LENGTH = (GroundConstants::HEIGHTMAP_SIZE + 0.5) * GroundConstants::CELL_SIZE;
  const double WALL_DEPTH = 5.0;
  }

namespace ModelSizeConstants
  {
  const TVector3 TREE_DEFAULT_SIZE  = TVector3(10, 10, 25);
  const TVector3 BALLOONS_SHOP_DEFAULT_SIZE  = TVector3(GroundConstants::CELL_SIZE, GroundConstants::CELL_SIZE, 25);
  const TVector3 HUMAN_DEFAULT_SIZE = TVector3(4, 4, 10);
  const TVector3 BALLOON_DEFAULT_SIZE = TVector3(3, 3, 10);
  const TVector3 BENCH_DEFAULT_SIZE = TVector3(GroundConstants::CELL_SIZE, 4, 5);
  const TVector3 FERRIS_WHEEL_DEFAULT_SIZE = TVector3(40, 40, 45);
  }

namespace HumanConstants
  {
	const double STEP_LENGTH      = GroundConstants::CELL_SIZE / 25;
	const double WALKING_BOUNDARY = GroundConstants::CELL_SIZE / 2 + STEP_LENGTH;
  const TVector3 GIRL_BALLOON_POSITION(2, 1, 4.4);
  }
